/**
 * @file stlstrings_unicode.h
 * @brief Unicode support for CString class
 */

#ifndef STLSTRINGS_UNICODE_H
#define STLSTRINGS_UNICODE_H

#include "stlstrings.h"
#include <string>
#include <wx/string.h>

// 为 CString 添加 Unicode 支持
class CStringUnicode : public CString {
public:
    CStringUnicode() : CString() {}
    CStringUnicode(const char* str) : CString(str) {}
    CStringUnicode(const wchar_t* wstr) {
        if (wstr) {
            wxString wxstr(wstr);
            assign(wxstr.ToStdString());
        }
    }
    CStringUnicode(const wxString& wxstr) {
        assign(wxstr.ToStdString());
    }
    
    // 转换为宽字符串
    const wchar_t* wc_str() const {
        static thread_local wxString buffer;
        buffer = wxString::FromUTF8(c_str());
        return buffer.wc_str();
    }
    
    // 从宽字符串转换
    static CStringUnicode FromWide(const wchar_t* wstr) {
        return CStringUnicode(wstr);
    }
    
    // 转换为 wxString
    wxString ToWxString() const {
        return wxString::FromUTF8(c_str());
    }
};

// 如果 CString 没有 wc_str 方法，使用这个别名
#ifdef CSTRING_NO_UNICODE
typedef CStringUnicode CStringCompat;
#else
typedef CString CStringCompat;
#endif

#endif // STLSTRINGS_UNICODE_H
